home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Assassins - Ultimate CD Games Collection 2
/
Assassins 2 - Ultimate Games No. 2 (1995)(Weird Science)[!][Amiga-CD32-CDTV].iso
/
arcade
/
jar
/
src
/
tetwbench.s
< prev
Wrap
Text File
|
1995-01-01
|
3KB
|
199 lines
; A fragment of code borrowed from 'music' a pd music demo from
; Commodore and resourced using resource.
;
public _main
public AmigaJunk
public _stdout
AmigaJunk
lea initialSP(pc),a1
move.l sp,(a1)
lea dosCmdLen(pc),a1
move.l d0,(a1)
lea dosCmdBuf(pc),a1
move.l a0,(a1)
lea returnMsg(pc),a1
move.l #0,(a1)
move.l 4,a6
sub.l a1,a1
jsr -$0126(a6) ; allocate memory
move.l d0,a4
tst.l $00AC(a4)
beq fromWorkbench
fromCLI bsr openDOS
clr.l -(sp)
bsr _FindTask
addq.l #4,sp
move.l d0,a0
move.l $00AC(a0),a0
add.l a0,a0
add.l a0,a0
move.l $0010(a0),a0
add.l a0,a0
add.l a0,a0
movem.l d2/a2/a3,-(sp)
lea argvBuffer(pc),a2
lea argvArray(pc),a3
moveq.l #1,d2
moveq.l #0,d0
move.b (a0)+,d0
move.l a2,(a3)+
bra.s 1$
2$ move.b (a0)+,(a2)+
1$ dbra d0,2$
clr.b (a2)+
move.l dosCmdLen(pc),d0
move.l dosCmdBuf(pc),a0
3$ move.b (a0)+,d1
subq.l #1,d0
ble.s parmExit
cmp.b #$20,d1
ble.s 3$
addq.l #1,d2
move.l a2,(a3)+
bra.s 5$
4$ move.b (a0)+,d1
subq.l #1,d0
cmp.b #$20,d1
ble.s 6$
5$ move.b d1,(a2)+
bra.s 4$
6$ clr.b (a2)+
bra.s 3$
parmExit
clr.b (a2)+
clr.l (a3)+
move.l d2,d0
movem.l (sp)+,d2/a2/a3
pea argvArray(pc)
move.l d0,-(sp)
bsr _Input
lea _stdin(pc),a0
move.l d0,(a0)
bsr _Output
lea _stdout(pc),a0
move.l d0,(a0)+
move.l d0,(a0)
bsr _main
moveq.l #0,d0
move.l initialSP(pc),sp
rts
fromWorkbench
bsr openDOS
bsr waitmsg
lea returnMsg(pc),a0
move.l d0,(a0)
move.l d0,-(sp)
move.l d0,a2
move.l $0024(a2),d0
beq.s docons
move.l _DOSBase(pc),a6
move.l d0,a0
move.l 0(a0),d1
jsr -$007E(a6)
docons move.l $0020(a2),d1
; beq.s domain
lea mywindow(pc),a0
move.l a0,d1
move.l #$000003ED,d2
jsr -$001E(a6)
lea _stdin(pc),a0
move.l d0,(a0)+
move.l d0,(a0)+
move.l d0,(a0)
beq.s domain
lsl.l #2,d0
move.l d0,a0
move.l 8(a0),$00A4(a4)
domain clr.l -(sp)
bsr _main
move.l _stdin(pc),d1
beq.s 1$
move.l _DOSBase(pc),a6
jsr -$24(a6)
1$
moveq.l #0,d0
bra.s exit2
_exit move.l 4(sp),d0
exit2 move.l initialSP(pc),sp
move.l d0,-(sp)
move.l returnMsg(pc),d1
beq.s exitToDOS
move.l 4,a6
jsr -$0084(a6)
move.l returnMsg(pc),a1
jsr -$017A(a6)
exitToDOS
move.l (sp)+,d0
rts
noDOS movem.l d7/a5/a6,-(sp)
move.l #$00038007,d7
move.l 4,a6
jsr -$006C(a6)
movem.l (sp)+,d7/a5/a6
moveq.l #$64,d0
bra.s exit2
waitmsg lea $005C(a4),a0
jsr -$0180(a6)
lea $005C(a4),a0
jsr -$0174(a6)
rts
openDOS lea DOSName(pc),a1
jsr -$0198(a6)
lea _DOSBase(pc),a1
move.l d0,(a1)
beq.s noDOS
rts
_FindTask
move.l a6,-(sp)
move.l 8(sp),a1
move.l 4,a6
jsr -$0126(a6)
move.l (sp)+,a6
rts
_Input move.l a6,-(sp)
move.l _DOSBase,a6
jsr -$0036(a6)
move.l (sp)+,a6
rts
_Output move.l a6,-(sp)
move.l _DOSBase,a6
jsr -$003C(a6)
move.l (sp)+,a6
rts
mywindow dc.b 'RAW:0/0/400/80/tetris window',0
even
_DOSBase dc.l 0
_errno dc.l 0
_stdin dc.l 0
_stdout dc.l 0
_stderr dc.l 0
initialSP dc.l 0
returnMsg dc.l 0
dosCmdLen dc.l 0
dosCmdBuf dc.l 0
argvArray dcb.l 32,0
argvBuffer dcb.l 64,0
DOSName dc.b 'dos.library',0